/**
 * @author taowei20061122@163.com
 *
 * 2013-6-10 下午11:05:22
 */
package study.designpattern.observer.impl;

import study.designpattern.observer.WaterQualityObserver;
import study.designpattern.observer.WaterQualitySubject;

/**
 * 目标对象，即具体的水质监测对象
 * @author taowei20061122@163.com
 *
 * 2013-6-10 下午11:05:22
 */
public class WaterQuality extends WaterQualitySubject {

	/**
	 * 污染的级别：0-正常、1-轻度污染、2-中度污染、3-高度污染
	 */
	private int polluteLevel = 0;
	
	/**
	 * 获取水质污染的级别
	 */
	public int getPolluteLevel() {
		return polluteLevel;
	}
	
	/**
	 * 当监测到水质情况后，设置污染的级别
	 * @param level 污染的级别
	 */
	public void setPolluteLevel(int level) {
		this.polluteLevel = level;
		//通知相应的观察者
		this.notifyWatchers();
	}
	
	/**
	 * 通知相应的观察者对象
	 */
	public void notifyWatchers() {
		//循环所有的观察者
		for(WaterQualityObserver observer: observers) {
			//开始根据污染级别判断是否需要通知，由这里总控
			if (this.polluteLevel>=0) {
				//通知监测员
				if ("监测员".equals(observer.getJob())) {
					observer.update(this);
				}
			}
			if (this.polluteLevel>=1) {
				//通知预警人员
				if ("预警人员".equals(observer.getJob())) {
					observer.update(this);
				}
			}
			if (this.polluteLevel>=2) {
				//通知监测部门领导
				if ("监测部门领导".equals(observer.getJob())) {
					observer.update(this);
				}
			}
		}
	}
}
